1000 REM * DARKTERM '88 1010 REM * 1650 MODEM FILE SOURCE 1020 REM * 1030 OPEN1,9,15,"S0:D'88.1650":CLOSE1 1040 OPEN2,9,1,"0:D'88.1650" 1050 SYS700 1060 .OPT O2 1070 ; 1080 CHKIN =$FFC6 ; KERNAL EQUATES 1090 CHKOUT =$FFC9 1100 CHRIN =$FFCF 1110 CHROUT =$FFD2 1120 CLRCHN =$FFCC 1130 GETIN =$FFE4 1140 ; 1150 PTR =140 ; TEMP POINTER 1160 ; 1170 DETECT =922 ; CARRIER DETECT FLAG 1180 DDELAY =927 ; DIALING DELAY 1190 WDELAY =926 ; CARRIER WAIT DELAY 1200 HDELAY =925 ; HANGUP DELAY 1210 ; 1220 MILLI =$880+24 ; USE TERMINAL'S 1230 ; 1240 *=$4500 ; STARTS HERE UP TO $47FF 1250 ; 1260 JMP ANSWER ; AUTO-ANSWER 1270 JMP DODIAL ; AUTO-DIAL 1280 JMP ONHOOK ; LABEL SAYS ALL 1290 JMP OFHOOK ; OFF HOOK 1300 JMP CARCHK ; LOST CARRIER CHECK 1310 JMP CUSTOM ; USER DEFINED ROUTINE 1320 JMP HANGUP ; HANGUP ROUTINE 1330 ; 1340 ONHOOK LDA #0 ; ON-HOOK 1350 STA $DD01 1360 LDA #$20 1370 STA $DD03 ; PIN J AS OUTPUT 1380 RTS 1390 ; 1400 OFHOOK LDA #$20 ; OFF-HOOK 1410 STA $DD01 ; PIN J HI 1420 RTS 1430 ; 1440 DODIAL STX PTR ; SAVE ADDRESS 1450 STY PTR+1 ; OF DIAL PTR STRING 1460 JSR ONHOOK ; HANG UP 1470 LDA HDELAY ; WAIT HDELAY SECONDS 1480 JSR WAIT 1490 JSR OFHOOK ; OFF-HOOK 1500 LDA #2 ; WAIT 2 SECONDS 1510 JSR WAIT 1520 LDY #0 ; INDEX TO START 1530 STY POINT 1540 AUTO1 LDY POINT ; GET INDEX 1550 LDA (PTR),Y ; AND CHARACTER 1560 CMP #"0" ; CHECK FOR NUMBER 1570 BCC NEXT ; NO 1580 CMP #":" 1590 BCS NEXT ; NO 1600 SEC ; LESS 48 TO GET # OF 1610 SBC #48 ; PULSES 1620 BNE AUTO2 1630 LDA #10 ; 0, SO MAKE 10 PULSES 1640 AUTO2 STA PULSE ; SAVE IT 1650 LDA #0 ; PULSE COUNT 1660 STA COUNT 1670 AUTO3 JSR (null)OF ; PULSE OFF LINE 1680 LDX DDELAY ; WAIT DELAY 1690 LDY DDELAY+1 1700 JSR MILLI ; WAIT IT OUT 1710 JSR OFHOOK ; PULSE ON LINE 1720 LDX DDELAY ; WAIT AGAIN 1730 LDY DDELAY+1 1740 JSR MILLI 1750 INC COUNT ; NEXT PULSE 1760 LDA COUNT 1770 CMP PULSE ; DONE YET 1780 BNE AUTO3 ; NO 1790 LDA #40 ; WAIT 2/3 SEC FOR NEXT # 1800 JSR JIFFY 1810 JSR ABORT ; CHECK FOR STOP KEY 1820 NEXT INC POINT ; NEXT # 1830 LDA POINT 1840 CMP #18 ; DONE ALL 18 CHARS 1850 BNE AUTO1 ; NO, (null) BACK 1860 LDA WDELAY ; WAIT OUT THE DELAY 1870 JSR WAIT 1880 LDA $DD01 ; HAVE A CARRIER 1890 AND #16 1900 BEQ AUTO4 ; YES, SIGNAL IT 1910 SEC ; NO, SET ZERO FLAG TRUE 1920 LDA #0 ; AND SET CARRY (NOT ABORT) 1930 RTS 1940 AUTO4 SEC ; HAVE CARRIER, SET 1950 LDA #1 ; ZERO FALSE 1960 RTS ; EXIT 1970 ; 1980 ABORT LDA $91 ; CHECK STOP KEY 1990 CMP #$7F 2000 BNE ABO1 ; NO, (null) BACK 2010 ABO0 PLA ; PULL RETURN ADDRESS 2020 PLA 2030 CLC ; CLEAR THE CARRY 2040 ABO1 RTS ; AND EXIT TO TERMINAL 2050 ; 2060 WAIT TAX ; 1 SECOND COUNTER 2070 W0 JSR CLRTIM 2080 W1 LDA $91 ; CHECK FOR ABORT 2090 CMP #$7F ; DURING THE WAIT 2100 BEQ ABO0 2110 LDA $A2 2120 CMP #60 2130 BCC W1 2140 DEX 2150 BMI W2 2160 BNE W0 2170 W2 RTS 2180 ; 2190 POINT .BYT 0 2200 COUNT .BYT 0 2210 PULSE .BYT 0 2220 KEYVAL .BYT 0 2230 ; 2240 ANSWER JSR ONHOOK ; ON-HOOK 2250 AN1 LDA $DD01 ; CHECK FOR RING 2260 AND #8 ; DETECT 2270 BEQ AN2 ; WE HAVE R.D., (null) ON 2280 JSR GETKEY ; CHECK FOR KEYPRESS 2290 BEQ AN1 2300 AN0 JSR OFHOOK ; OFF-HOOK 2310 LDA KEYVAL ; GET KEY PRESSED 2320 CLC ; AND ABORT 2330 RTS 2340 AN2 JSR CLRTIM 2350 JSR OFHOOK ; OFF-HOOK 2360 AN3 JSR GETKEY 2370 BNE AN0 2380 LDA $DD01 ; CHECK FOR DCD LINE 2390 AND #16 2400 BEQ AN4 ; (null)T CARRIER, SIGNAL 2410 LDA 160 2420 CMP #8 ; 30 SECOND CARRIER CHECK 2430 BCC AN3 2440 BCS ANSWER ; TIMES UP, RESET 2450 AN4 SEC ; SET CARRY FOR OK STATUS 2460 LDX #<300 ; SET BAUD RATE TO 300 2470 LDY #>300 2480 RTS 2490 ; 2500 (null)OF LDA #0 ; PULSE ON-HOOK 2510 STA $DD01 2520 RTS 2530 ; 2540 CLRTIM LDA #0 2550 STA $A0 2560 STA $A1 2570 STA $A2 2580 RTS 2590 ; 2600 JIFFY TAX 2610 JSR CLRTIM 2620 JIFF1 CPX $A2 2630 BCS JIFF1 2640 RTS 2650 ; 2660 GETKEY JSR GETIN 2670 PHA 2680 STA KEYVAL 2690 PLA 2700 RTS 2710 ; 2720 HANGUP JSR ONHOOK ; (null) ON-HOOK 2730 LDA #120 ; WAIT 2 SECONDS 2740 JSR JIFFY 2750 LDA $DD01 2760 AND #16 2770 BEQ HANGUP ; DO UNTIL HUNG UP 2780 JSR OFHOOK ; SET UP FOR NEXT CALL 2790 LDA #120 ; WAIT 2 SECONDS 2800 JMP JIFFY 2810 ; 2820 CARCHK BIT DETECT 2830 BPL CAR1 ; SKIP DETECTION 2840 LDA $DD01 2850 AND #16 2860 BEQ CAR1 ; STILL HAVE CARRIER 2870 CLC 2880 RTS ; CARRIER LOST 2890 CAR1 SEC 2900 RTS 2910 ; 2920 CUSTOM RTS ; NONE FOR 1650 MODEMS 2930 ;